﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Servidor;

namespace Dataloading
{
    class ControladorJuego
    {
        private dbEntities db;
        public ControladorJuego()
        {
            this.db = new dbEntities();
        }

        public IQueryable<Juego> Buscar(float numero_tipo)
        {
            return from j in this.db.Juego
                         where j.Tipo == numero_tipo
                         select j;
        }

        public List<JuegoTipo1> GetJuegosTipo1()
        {
            List<JuegoTipo1> juegos = new List<JuegoTipo1>();
            IQueryable<Juego> juegos_db = this.Buscar(1);
            foreach (Juego juego in juegos_db)
            {
                juegos.Add(new JuegoTipo1(juego));
            }

            return juegos;
        }

        public List<JuegoTipo2> JuegosTipo2()
        {
            List<JuegoTipo2> juegos = new List<JuegoTipo2>();
            IQueryable<Juego> juegos_db = this.Buscar(2);
            foreach (Juego juego in juegos_db)
            {
                juegos.Add(new JuegoTipo2(juego));
            }
            return juegos;
        }

        public List<TipoJuego> GetTodos()
        {
            List<TipoJuego> juegos = new List<TipoJuego>();
            var juegos_db = from j in this.db.Juego select j;

            foreach(Juego juego in juegos_db)
            {
                juegos.Add(this.CrearJuegoEspecifico(juego));
            }
            return juegos;
        }

        public TipoJuego CrearJuegoEspecifico(Juego juego)
        {
            if (juego.Tipo == 1) return new JuegoTipo1(juego);
            else return new JuegoTipo2(juego);
        }
        
        public void Guardar()
        {
            this.db.SaveChanges();
        }

        public List<TipoJuego> FindByDia(int numero_dia)
        {
            List<TipoJuego> juegos = new List<TipoJuego>(); 
            foreach(Dias d in this.db.Dias)
            {
                d.JuegoReference.Load();
                if (d.Dia == numero_dia)
                {
                    juegos.Add(this.CrearJuegoEspecifico(d.Juego));
                }
            }
                return juegos;
            }
           
        }
    }
